#include "Melange.hpp"

#include <algorithm>

using namespace std;

Couleur faireMelangeCouleurs(const vector< Couleur >& vec,
			     const vector< double >& poids)
{
  vector< double > compRouge, compVert, compBleu;

  unsigned int i, taille( vec.size() );

  compRouge.assign( taille, 0 );
  transform( vec.begin(), vec.end(), compRouge.begin(), getRouge );

  compVert.assign( taille, 0 );
  transform( vec.begin(), vec.end(), compVert.begin(), getVert );

  compBleu.assign( taille, 0 );
  transform( vec.begin(), vec.end(), compBleu.begin(), getBleu );

  double rouge(0.), vert(0.), bleu(0.);
  for (i = 0; i < taille; i++)
    {
      rouge += compRouge[ i ] * poids[ i ];
      vert  += compVert[ i ]  * poids[ i ];
      bleu  += compBleu[ i ]  * poids[ i ];
    }

  return Couleur( static_cast< int >( rouge ),
		  static_cast< int >( vert ),
		  static_cast< int >( bleu ) );
}

double getRouge(const Couleur& col)
{
  return static_cast< double >( col.rouge() );
}

double getVert(const Couleur& col)
{
  return static_cast< double >( col.vert() );
}

double getBleu(const Couleur& col)
{
  return static_cast< double >( col.bleu() );
}
